//
//  BAVisitorView.swift
//  BAweibo
//
//  Created by baggio on 2017/8/4.
//  Copyright © 2017年 baggio. All rights reserved.
//


//访客视图，公用这个类

import UIKit
import SnapKit

class BAVisitorView: UIView {
    
    //01定义闭包
    var closure:(()->())?

    override init(frame: CGRect) {
        super.init(frame: frame)
        
        setUpUI()
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    //给外部调用，不同的 tab 设置不同的 logoImage 和 文字，首页 传2个 nil
    func setUpVisitorViewInfo(logoImageName:String?,message:String?){
        if let l=logoImageName,let m=message{
            logoImageView.image=UIImage(named:l)
            messageLabel.text=m
            
            //去掉 圆圈
            circleImageView.isHidden=true
        }else{
            //首页
            //圆圈转起来
            setupCircleImageViewAnimation()
        }
        
        //sendSubview(toBack: maskImageView)
    }
    
    //设置圆圈动画
    func setupCircleImageViewAnimation(){
        let anim=CABasicAnimation(keyPath: "transform.rotation")
        anim.duration=15
        //anim.fromValue=0 //起始角度 默认0
        anim.toValue=2*Double.pi //终止角度 360
        anim.repeatCount=MAXFLOAT
        //页面到后台再恢复，动画默认会移除，改成不移除
        anim.isRemovedOnCompletion=false
        //添加动画
        circleImageView.layer.add(anim, forKey: nil)
    }
    
    func setUpUI(){
        
        //灰色
        self.backgroundColor = RGB(red: 235, green: 235, blue: 235)
        
        //添加控件
        addSubview(circleImageView)
        addSubview(maskImageView)
        addSubview(logoImageView)
        addSubview(messageLabel)
        addSubview(registerButton)
        addSubview(loginButton)

        //用 SnapKit框架 给控件设置约束（位置，大小）
        
        //圆圈，圆圈中心 == BAVisitorView 的中心
        circleImageView.snp.makeConstraints { (m) in
            m.center.equalTo(self)
        }

        //遮挡
        maskImageView.snp.makeConstraints { (m) in
            m.center.equalTo(self)
        }
        
        //logo房子
        logoImageView.snp.makeConstraints { (m) in
            m.center.equalTo(self)
        }

        //文字
        messageLabel.snp.makeConstraints { (m) in
            m.centerX.equalTo(self)
            //设置宽度，高度会自适应
            m.width.equalTo(230)
            //相对位置
            m.top.equalTo(circleImageView.snp.bottom).offset(16)
        }
        
        //注册按钮
        registerButton.snp.makeConstraints { (m) in
            m.size.equalTo(CGSize(width: 100, height: 35))
//            m.left.equalTo(messageLabel.snp.left)
            //如果属性一样(都是 left)，可以简写
            m.left.equalTo(messageLabel)
            m.top.equalTo(messageLabel.snp.bottom).offset(16)
        }
        
        //登录按钮
        loginButton.snp.makeConstraints { (m) in
//            m.size.equalTo(registerButton)
//            m.top.equalTo(registerButton.snp.top)
            //可以简写成
            m.size.top.equalTo(registerButton)
            m.right.equalTo(messageLabel.snp.right)
        }
    }
    
    
    //6个控件，如果位置有重合部分，后面的会覆盖前面的
    //圆圈 visitordiscover_feed_image_smallicon
    //用这种方式创建的 UIImageView，不用设置大小，图片多大，UIImageView 就多大
//    private lazy var circleImageView:UIImageView=UIImageView(image: UIImage(named: "visitordiscover_feed_image_smallicon"))
    //这样创建 UIImageView，有点麻烦，扩展 UIImageView 的 convenience 构造函数，只用传 图片名，就可以创建 UIImageView
    //可以改成
    private lazy var circleImageView:UIImageView=UIImageView(imgName: "visitordiscover_feed_image_smallicon")
    
    //遮挡
    //    private lazy var maskImageView:UIImageView=UIImageView(image: UIImage(named: "visitordiscover_feed_mask_smallicon"))
    private lazy var maskImageView:UIImageView=UIImageView(imgName: "visitordiscover_feed_mask_smallicon")
    
    //房子
//    private lazy var logoImageView:UIImageView=UIImageView(image: UIImage(named: "visitordiscover_feed_image_house"))
    private lazy var logoImageView:UIImageView=UIImageView(imgName: "visitordiscover_feed_image_house")
    
    //文字
    //改用扩展后的 UILabel 的便利构造函数
//    private lazy var messageLabel:UILabel={
//        let label=UILabel()
//        label.text="关注一些人，回这里看看有什么惊喜"
//        label.font=UIFont.systemFont(ofSize: 14)
//        label.textColor=UIColor.darkGray
//        //文字一行写不下，换行（默认是...），0表示行数没有限制，默认是1
//        label.numberOfLines=0
//        return label
//    }()
    private lazy var messageLabel:UILabel=UILabel(textAlignment: .left, text: "关注一些人，回这里看看有什么惊喜", textColor: UIColor.darkGray, fontSize: 14, numberOfLines: 0, alpha: 1)
    
    //注册按钮
    //改用扩展后的 UIButton 的便利构造函数
//    private lazy var registerButton:UIButton={
//        let btn=UIButton()
//        btn.setBackgroundImage(UIImage(named:"common_button_white"), for: .normal)
//        btn.setTitle("注册", for: .normal)
//        btn.titleLabel?.font=UIFont.systemFont(ofSize: 14)
//        btn.setTitleColor(UIColor.darkGray, for: .normal)
//        btn.setTitleColor(BA_COLOR_APP_THEME, for: .highlighted)
//        btn.addTarget(self, action: #selector(loginClick), for: .touchUpInside)
//        return btn
//    }()
    private lazy var registerButton:UIButton=UIButton(title: "注册", titleColor: UIColor.darkGray, titleColorHighlight: BA_COLOR_APP_THEME, titleLabelFont: 14, imgName: nil, backgroundImgName: "common_button_white", target: self, action: #selector(loginClick))
    
    //登录按钮
    //改用扩展后的 UIButton 的便利构造函数
//    private lazy var loginButton:UIButton={
//        let btn=UIButton()
//        //修改图片的拉伸方式，assets中选中图片，最右边 attribute->最下面 slicing 改成 horizontal and vertical
//        btn.setBackgroundImage(UIImage(named:"common_button_white"), for: .normal)
//        btn.setTitle("登录", for: .normal)
//        btn.titleLabel?.font=UIFont.systemFont(ofSize: 14)
//        btn.setTitleColor(UIColor.darkGray, for: .normal)
//        btn.setTitleColor(BA_COLOR_APP_THEME, for: .highlighted)
//        btn.addTarget(self, action: #selector(loginClick), for: .touchUpInside)
//        return btn
//    }()
    private lazy var loginButton:UIButton=UIButton(title: "登录", titleColor: UIColor.darkGray, titleColorHighlight: BA_COLOR_APP_THEME, titleLabelFont: 14, imgName: nil, backgroundImgName: "common_button_white", target: self, action: #selector(loginClick))
    
    
    //点击button要弹出控制器，但是 view 不能弹出控制器，只有控制器才可以弹出控制器，所以 BAVisitorView 只能委托它的父控制器 BABaseViewController，利用闭包
    @objc private func loginClick(){
        //03执行闭包
        closure?()
    }
    
}
